﻿// 105 最长回文子串.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using namespace std;
/*
http://oj.daimayuan.top/course/5/problem/137

给定一个长度为 n的数组 a1,a2,…,an
，问其中的最长回文子串长度。

定义子串 al,al+1,…,ar为回文子串，当且仅当这个子串正着看和反着看是一样的，即有 al=ar,al+1=ar−1,…。

输入格式
第一行一个整数 n，表示元素个数。

接下来一行，n个整数，a1,a2,…,an。

输出格式
一个整数，表示答案。

样例输入
6
1 2 3 3 2 4
样例输出
4
数据规模
对于 100%的数据，保证 1≤n≤1000,1≤ai≤1000。
*/


const int N = 1010;
int arr[N];
int dp[N][N];

int n;

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++) { cin >> arr[i]; }
	int ans = 1;
	for (int i = n; i >= 1; i--) {
		dp[i][i] = 1;
		if (i < n && arr[i] == arr[i + 1]) { dp[i][i + 1] = 2; ans = max(ans, 2); }
		for (int j = i + 2; j <= n; j++) {
			if (arr[i] == arr[j]) {
				dp[i][j] = max(dp[i][j], dp[i + 1][j - 1] + 2);
				ans = max(ans, dp[i][j]);
			}
		}
	}

	cout << ans << endl;
	 
	return 0;
}
 